package com.ray.shirodemo1.config;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * User: Ray.Shaw <p />
 * Time: 2019/5/16 17:43  <p />
 * Version: V1.0  <p />
 * Description: shiro对特定路径的拦截 <p />
 */
public class ShiroFilterMapFactory {
    public static Map<String, String> shiroFilterMap() {
        // 设置路径映射，注意这里要用LinkedHashMap 保证有序
        LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
        // 游客，开发权限
        filterChainDefinitionMap.put("/guest/**", "anon");
        //用户，需要角色权限 “user”
        filterChainDefinitionMap.put("/user/**", "roles[user]");
        // 管理员，需要角色权限 “admin”
        filterChainDefinitionMap.put("/admin/**", "roles[admin]");
        // 开放登陆接口
        filterChainDefinitionMap.put("/login", "anon");
        // 其余接口一律拦截, 主要这行代码必须放在所有权限设置的最后，不然会导致所有 url 都被拦截
        filterChainDefinitionMap.put("/**", "authc");

        return filterChainDefinitionMap;
    }
}
